<!--
  Copyright JS Foundation and other contributors, http://js.foundation

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<script type="text/html" data-help-name="function">
    <p>受信メッセージに対して処理を行うJavaScriptコード(関数の本体)を<b>Function</b>タブに定義します。</p>
    <p>入力メッセージは<code>msg</code>という名称のJavaScriptオブジェクトで受け渡されます。</p>
    <p><code>msg</code>オブジェクトは<code>msg.payload</code>プロパティにメッセージ本体を保持するのが慣例です。</p>
    <p>通常、コードはメッセージオブジェクト(もしくは複数のメッセージオブジェクト)を返却します。後続フローの実行を停止したい場合は、オブジェクトを返却しなくてもかまいません。</p>
    <p><b>初期化処理</b>タブにはノードの開始時に実行されるコードを、<b>終了処理</b>タブにはノードの終了時に実行されるコードを指定します。</p>
    <p>初期化処理タブの返却値としてPromiseオブジェクトを返却すると、入力メッセージの処理を開始する前にその完了を待ちます。</p>
    <h3>詳細</h3>
    <p>コードの書き方の詳細については、<a target="_blank" href="https://nodered.org/docs/writing-functions.html">オンラインドキュメント</a>を参照してください。</p>
    <h4>メッセージの送信</h4>
    <p>フロー内の次ノードにメッセージを渡すためには、メッセージを返却するか<code>node.send(messages)</code>を呼び出します。</p>
    <p>返却/sendの対象は次のとおりです:</p>
    <ul>
      <li>単一メッセージオブジェクト - 最初の出力に接続されたノードに渡されます</li>
      <li>メッセージオブジェクトの配列 - 対応する出力に接続されたノードに渡されます</li>
    </ul>
    <p>注: 初期化処理の実行はノードの初期化中に行われます。そのため、初期化処理タブにsendを記述した場合に後続ノードでメッセージを受け取れないことがあります。</p>
    <p>配列要素が配列の場合には、複数のメッセージを対応する出力に送出します。</p>
    <p>返却方法が単一値か配列要素かにかかわらず、返却値がnullの場合メッセージの送出は行いません。</p>
    <h4>ログ出力とエラー処理</h4>
    <p>ログ情報の出力、エラー出力を行うには以下の関数を用います:</p>
      <ul>
          <li><code>node.log("ログメッセージ")</code></li>
          <li><code>node.warn("警告")</code></li>
          <li><code>node.error("エラー")</code></li>
      </ul>
    </p>
    <p>catchノードを用いてエラー処理が可能です。catchノードで処理させるためには、<code>msg</code>を<code>node.error</code>の第二引数として渡します:</p>
    <pre>node.error("エラー",msg);</pre>
    <h4>ノード情報の参照</h4>
    <p>ノードに関する情報を参照するための以下のプロパティを利用できます:</p>
    <ul>
        <li><code>node.id</code> - ノードのID</li>
        <li><code>node.name</code> - ノードの名称</li>
        <li><code>node.outputCount</code> - ノードの出力数</li>
    </ul>
    <h4>環境変数の利用</h4>
    <p>環境変数は<code>env.get("MY_ENV_VAR")</code>により参照できます。</p>
</script>
